﻿// 1400. 堆叠相框.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>



/*
https://www.acwing.com/problem/content/1402/

下面是五个相框，均摆放在 9×8 的矩阵中。

........   ........   ........   ........   .CCC....
EEEEEE..   ........   ........   ..BBBB..   .C.C....
E....E..   DDDDDD..   ........   ..B..B..   .C.C....
E....E..   D....D..   ........   ..B..B..   .CCC....
E....E..   D....D..   ....AAAA   ..B..B..   ........
E....E..   D....D..   ....A..A   ..BBBB..   ........
E....E..   DDDDDD..   ....A..A   ........   ........
E....E..   ........   ....AAAA   ........   ........
EEEEEE..   ........   ........   ........   ........

   1          2           3          4          5
每个相框的边沿用一种大写字母来表示。

现在将这 5 个相框堆叠在一起，按从下到上 1∼5 的顺序堆放，每个相框在矩阵中的相对位置不变。

当相框发生重叠时，上面的相框会覆盖下面的相框，如下所示：

           .CCC....
           ECBCBB..
           DCBCDB..
           DCCC.B..
           D.B.ABAA
           D.BBBB.A
           DDDDAD.A
           E...AAAA
           EEEEEE..
给定一个相框重叠在一起后的图像，请你判断相框们的堆叠顺序。

注意，题目规定：

相框的每条边的宽度均为 1 个字母，边长均不小于 3 个字母。
在给定图像中，每个相框的每条边都至少能看到一部分，角算作相邻两条边的部分。
相框都用大写字母表示，且不同相框所用大写字母不同。
输入格式
第一行包含两个整数 H,W，分别表示最终图像的长和宽。

接下来 H 行，每行包含一个长度为 W 的字符串，共同描绘了完整的相框重叠图像。

输出格式
按照从下到上的堆叠顺序，输出所有相框的对应字母，字母之间无间隔，占一行。

如果存在多种堆叠可能性，则按照字典序将所有可能情况全部输出，每个占一行。

数据保证有解。

数据范围
3≤H,W≤30，
相框数量不会超过 20 个。

输入样例：
9 8
.CCC....
ECBCBB..
DCBCDB..
DCCC.B..
D.B.ABAA
D.BBBB.A
DDDDAD.A
E...AAAA
EEEEEE..
输出样例：
EDABC
*/
int main()
{
    std::cout << "Hello World!\n";
}

 